//#include<iostream>
//using namespace std;
//int n;
//string s;
//void dfs(int pos, int path,string s)
//{
//	s += (pos + '0');
//	s += '+';
//	path += pos;
//	if(path == n)
//	{
//		s.pop_back();
//		cout << s << endl;
//		return;
//	}
//	if(path > n) return;
//	for(int i = pos; i < n; i++)
//	{
//		dfs(i, path, s);
//	}
//	path -= pos;
//	s.pop_back();
//	s.pop_back();
//}
//int main()
//{
//	cin >> n;
//	for(int i = 1; i < n; i++)
//	{
//		dfs(i,0,s);
//	}
//	return 0;
//}
//#include<iostream>
//#include<vector>
//using namespace std;
//const int M = 160, N = 155;
//vector<int>edges[2 * M];
//int n, m;
//string ret;
//bool cnt[N][N];
//void dfs(int pos)
//{
//	for(int i = 1; i <= n; i++)
//	{
//		if(!cnt[pos][i])
//		{
//			for(auto x : edges[pos])
//			{
//				cnt[x][i] = true;
//			}
//			ret +=  (i + '0');
//			return;
//		}
//	}
//}
//int main()
//{
//	cin >> n >> m;
//	
//	for(int i = 1; i <= m; i++)
//	{
//		int u, v; cin >> u >> v;
//		edges[u].push_back(v);
//		edges[v].push_back(u);
//	}
//	for(int i = 1; i <= n; i++)
//	{
//		dfs(i);
//	}
//	cout << ret << endl;
//}
//#include<iostream>
//using namespace std;
//const int N = 510;
//int edges[N][N];
//int cnt[N];
//int main()
//{
//	int n, p, c;
//	for(int i = 1; i <= n; i++)
//	{
//		cin >> cnt[i];
//	}
//	while(c--)
//	{
//		int x, y, z; cin >> x >> y >> z;
//		edges[x][y] = edges[y][x] = min(z, edges[x][y]); 
//		
//	}
//	
//	
//	return 0;
//}
#include<iostream>
#include<algorithm>
using namespace std;
const int N = 1.5e5;
struct node
{
	int a, b;
	int w;
}e[N];
int n;
bool cmp(node& x, node& y)
{
	if(x.a == y.a) return x.b > y.b;
	else return x.a < y.a;
}
int main()
{
	cin >> n;
	for(int i = 1; i <= n; i++)
	{
		cin >> e[i].a >> e[i].b;
		e[i].w = b - a + 1;
	}
	sort(e + 1, e + 1 + n);
	for(int i = 1; i <= n; i++)
	return 0;
}


